#include<queue>
#include<vector>
using namespace std;
// #define PRIORITY_QUEUE
#ifdef PRIORITY_QUEUE
class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        priority_queue<pair<int,int>>maxq;//优先级队列 <元素，索引>根据最大值的索引更新窗口大小
        vector<int>ret;
        for(int i=0;i<k;i++)
            maxq.push({nums[i],i});
        ret.push_back(maxq.top().first);
        for(int j=k;j<nums.size();j++)
        {
            maxq.push({nums[j],j});
            while(j-maxq.top().second+1>k)//更新当前窗口内的最大值
                maxq.pop();
            ret.push_back(maxq.top().first);
        }
        return ret;
    }
};
#endif